package com.yuw.dz.control;

import com.alibaba.fastjson.JSON;
import com.yuw.dz.bean.UserBean;
import com.yuw.dz.modal.UserInfoModal;
import com.yuw.dz.utils.MyUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet("/UserInfoAjaxQueryServlet")
public class UserInfoAjaxQueryServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /////////////////////////////////////////////////这部分内容在高级框架中是自动实现（由springmvc的数据类型自动转换解决）/////////////
        // 参考：https://gitee.com/climpeaker/zb_webproject0920.git

        // 1、使用request的getParameter方法获取表单数据封装存储到javabean中

        // 获取用户端页面发送的表单数据
        // 创建一个实体类实例对象----作用：作为参数传递的载体
        UserBean userB = new UserBean();
        // 将从request中获取的表单数据设置给参数实体类
        userB.setUserName(request.getParameter("userName")); // 参数名要和form表单中的name属性值保持一致
        userB.setUserAddress(request.getParameter("userAddress"));
        userB.setUserTel(request.getParameter("userTel"));
        userB.setUserRegDate(MyUtils.convertString2Date(request.getParameter("userRegDate"), "yyyy-MM-dd"));

        // 查询条件：注册截止时间
        userB.setUserRegDate2(MyUtils.convertString2Date(request.getParameter("userRegDate2"), "yyyy-MM-dd"));

        //////////////////////////////////////////////这部分内容在高级框架中是自动实现///////////////////////////////////////////////////////////
        // 2、调用modal层进行业务逻辑处理（modal层再调用数据库操作进行数据库处理）
        // 创建modal业务逻辑处理的实例类对象
        UserInfoModal userInfoM = new UserInfoModal();  // spring 的依赖注入解决
        // 用户信息查询处理
        List<UserBean> list = userInfoM.getUserInfoByParams(userB);

        // 3、将服务器的响应内容发回ajax引擎对象
        // 将java的集合数据类型转换为Json数据类型【借助于第三方jar包工具完成】
        String strJsonList = JSON.toJSONStringWithDateFormat(list, "yyyy-MM-dd HH:mm:ss");
        System.out.println("Json字符串：" + strJsonList);
        // 使用out对象(PrintWriter)将响应内容，输出给ajax引擎对象
        PrintWriter printWriter = response.getWriter();
        // 发送响应内容到浏览器的ajax引擎
        printWriter.println(strJsonList); // 发送的json字符串
        // 清空数据 【清空printwriter的缓存区的数据】
        printWriter.flush();

    }
}
